package com.github.mikephil.charting.formatter;

import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.interfaces.dataprovider.LineDataProvider;
import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;

/**
 * Default formatter that calculates the position of the filled line.
 *
 * @author Philipp Jahoda
 */
public class DefaultFillFormatter implements IFillFormatter {

    @Override
    public float getFillLinePosition(ILineDataSet dataSet, LineDataProvider dataProvider) {
        float fillMin;
        final float chartMaxY = dataProvider.getYChartMax();
        final float chartMinY = dataProvider.getYChartMin();
        final LineData data = dataProvider.getLineData();

        if (dataSet.getYMax() > 0 && dataSet.getYMin() < 0) {
            fillMin = 0f;
        } else {
            float max, min;
            if (data.getYMax() > 0) {
                max = 0f;
            } else {
                max = chartMaxY;
            }
            if (data.getYMin() < 0) {
                min = 0f;
            } else {
                min = chartMinY;
            }
            fillMin = dataSet.getYMin() >= 0 ? min : max;
        }
        return fillMin;
    }
}
